package com.allwees.bs.module.core.datapermission.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.allwees.bs.core.modelbase.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

/**
 * 数据权限规则定义
 *<p>
 * <ul>过滤表达式：
 * <li><code>{uid}</code>会自动替换为当前用户的uuid</li>
 * <li><code>{sid}</code>会自动替换为当前用户所属供应商的uuid</li>
 * <li><code>{rid}</code>会自动替换为当前用户所属零售商的uuid</li>
 * <li><code>{bid}</code>会自动替换为当前用户所属商户（供应商或零售商）的uuid</li>
 * <li><code>{t}</code> table 表名称</li>
 * <li><code>{t.a}</code> table alias 表别名</li>
 * </ul>
 * <ul>格式如：
 * <li>({t}.uuid={sid})</li>
 * <li>({t}.supplier_uuid={sid})</li>
 * <li>({t}.retailer_uuid={rid})</li>
 * <li>({t.a}.supplier_uuid={sid} AND authType) > 3)</li>
 * </ul>
 * </p>
 * @author yangylsky
 * @since 2019-12-27
 *
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString
@NoArgsConstructor
@AllArgsConstructor
@TableName(PermissionRule.TABLE_NAME)
public class PermissionRule extends BaseEntity {
	public static final String TABLE_NAME = "sys_permission_rule";

	/**
	 * 适用角色列表<br>
	 * 格式如: ,RoleA,RoleB,
	 */
	private String roles;

	/**
	 * 主表，多表联合 格式如: prod_product,mms_supplier
	 */
	private String tables;

	/**
	 * 过滤表达式
	 */
	private String expression;

	/**
	 * 规则说明
	 */
	private String comment;

	public String[] getRoleNames() {
		return StringUtils.split(roles, ",");
	}

	public String[] getTableNames() {
		return StringUtils.split(tables, ",");
	}
}
